var thisPage = {
    _calendarId: "",
    _date: "",
    // 初始化页面
    OnPageLoad: function () {
        if (thisPage._calendarId !== "") {
            thisPage.FetchCalendarById();
        } else {
            $("#ButDelete").hide();         // 隐藏 删除按钮
            thisPage.NewCalendar();
        }
    },
    FetchCalendarById: function () {
        var _params = {};
        _params['CalendarId'] = thisPage._calendarId;
        $.ajax({
            type: "POST",
            url: parent.basePath + "/oa/mycalendar/fetchByCalendarId.html",
            timeout: 30 * 1000,
            data: JSON.stringify(_params),
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            beforeSend: function () {
            }
        }).done(function (data) {
            thisPage._calendarId = data.calendarId;
            $("#Title").val(data.title);
            $("#StartTime").val(data.startTime);
            $("#EndTime").val(data.endTime);
            $("#Contents").val(data.contents);
            $("#BackgroundColor").val(data.backgroundColor);
            $("#BackgroundColor").attr('data-defaultValue', data.backgroundColor);
            $("#BorderColor").val(data.borderColor);
            $("#BorderColor").attr('data-defaultValue', data.borderColor);
            $("#TextColor").val(data.textColor);
            $("#TextColor").attr('data-defaultValue', data.textColor);
            if (parseInt(data.allDay) === 1) {
                $("#AllDay").prop("checked", true);
            } else {
                $("#AllDay").prop("checked", false);
            }
            InitColors();
            $("#Title").focus();
        }).fail(function (data) {
            $('#loading').hide();
            ajaxError(data, 1);
        }).always(function () {
            $('#loading').hide();
        });
    },
    NewCalendar: function () {
        $("#BackgroundColor").val("#0886a7");
        $("#BorderColor").val("#0886a7");
        $("#TextColor").val("#ffffff");
        $("#StartTime").val(thisPage._date);
        $("#EndTime").val(thisPage._date);
        InitColors();

        $("#Title").focus();
        $('#loading').hide();
    },
    GetEntityData: function () {
        var item = {};
        item['calendarId'] = thisPage._calendarId;
        item['title'] = $.trim($("#Title").val());
        item['contents'] = $.trim($("#Contents").val());
        item['startTime'] = $.trim($("#StartTime").val());
        item['endTime'] = $.trim($("#EndTime").val());
        item['backgroundColor'] = $.trim($("#BackgroundColor").val());
        item['borderColor'] = $.trim($("#BorderColor").val());
        item['textColor'] = $.trim($("#TextColor").val());
        item['allDay'] = $("#AllDay").is(":checked") ? 1 : 0;
        item['createdBy'] = $.trim(parent.$("#UserId").val());
        item['updatedBy'] = $.trim(parent.$("#UserId").val());
        item['userId'] = $.trim(parent.$("#UserId").val());
        item['editable'] = 1;

        return JSON.stringify(item);
    },
    // 保存数据
    Save: function () {
        // step 1、进行页面验证，失败则返回
        if (!$("#form_data").valid())
            return;
        // step 2、设置结果（保存成功后，刷新日历）
        $.ajax({
            type: "POST",
            url: parent.basePath + "/oa/mycalendar/save.html",
            timeout: 30 * 1000,
            data: thisPage.GetEntityData(),
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            beforeSend: function () {
            }
        }).done(function (data) {
            // 新建
            if (thisPage._calendarId === "") {
                thisPage._calendarId = data.HeaderKey;
                ShowSuccessMessagePanel("保存成功。");
                $("#ButDelete").show();         //  删除按钮 可用
            } else {  // 编辑
                if (data.Success) {
                    ShowSuccessMessagePanel("保存成功。");
                } else {
                    ShowErrorMessagePanel('保存不成功。');
                }
            }
            parent.$('#calendar').fullCalendar('refetchEvents'); // 重新获取所有事件数据
        }).fail(function (data) {
            $('#loading').hide();
            ajaxError(data, 1);
        }).always(function () {
            $('#loading').hide();
        });
    },
    // 删除后关闭对话框并刷新日历
    Delete: function () {
        parent.showModal(350, 140, '确认删除', '', null, null, 1, '确定要删除当前日程记录吗？',
                function () {
                    var instance = {};
                    instance['calendarId'] = thisPage._calendarId;
                    instance['deletedBy'] = parseInt(parent.$("#UserId").val());

                    $.ajax({
                        type: "POST",
                        url: parent.basePath + '/oa/mycalendar/delete.html',
                        timeout: 30 * 1000,
                        data: JSON.stringify(instance),
                        contentType: "application/json; charset=utf-8",
                        dataType: "json",
                        beforeSend: function () {
                        }
                    }).done(function (data) {
                        if (data > 0) {
                            parent.$('#calendar').fullCalendar('refetchEvents'); // 重新获取所有事件数据
                            parent.ShowSuccessMessagePanel("删除成功。");
                            closePopupWnd();
                        } else {
                            ShowErrorMessagePanel('删除不成功。');
                        }
                    }).fail(function (data) {
                        ajaxError(data, 1);
                    }).always(function ( ) {
                    });
                });
    }
};

function InitColors() {
    $('.demo').each(function () {
        $(this).minicolors({
            control: $(this).attr('data-control') || 'hue',
            defaultValue: $(this).attr('data-defaultValue') || '',
            format: $(this).attr('data-format') || 'hex',
            keywords: $(this).attr('data-keywords') || '',
            inline: $(this).attr('data-inline') === 'true',
            letterCase: $(this).attr('data-letterCase') || 'lowercase',
            opacity: $(this).attr('data-opacity'),
            position: $(this).attr('data-position') || 'bottom left',
            swatches: $(this).attr('data-swatches') ? $(this).attr('data-swatches').split('|') : [],
            change: function (value, opacity) {
                if (!value)
                    return;
                if (opacity)
                    value += ', ' + opacity;
                if (typeof console === 'object') {
                }
            }
        });
    });
}
//-----------------------------------------------------------------------------
// 页面初始化
//-----------------------------------------------------------------------------
function onPageReady() {
    thisPage._calendarId = jQuery.url.param("calendarId") === undefined ? "" : jQuery.url.param("calendarId");
    thisPage._date = jQuery.url.param("date") === undefined ? "" : jQuery.url.param("date");
    $("#form_data").data("changed", false); // 初始化form数据提交状态

    window.laydate.render({
        elem: '#StartTime',
        type: 'datetime',
        theme: '#393D49',
        trigger: 'click'
    });
    window.laydate.render({
        elem: '#EndTime',
        type: 'datetime',
        theme: '#393D49',
        trigger: 'click'
    });

    thisPage.OnPageLoad();
}

// 画面大小或者位置移动
function onPageResize() {
}

//-----------------------------------------------------------------------------
// 验证函数
//-----------------------------------------------------------------------------
$(function () {
    $("#form_data").validate({
// Step 1：设置验证规则和错误消息
        rules: {
            _Title: "required"
        },
        messages: {
            _Title: "请填写标题。"
        },
        // Step 2：设置验证触发事件
        onclick: false,
        onfocusout: false,
        onfocusin: false,
        onkeyup: false,
        onkeydown: false,
        focusInvalid: false,
        // Step 3：设置错误信息提示
        showErrors: window.showErrors  //使用自定义的错误显示方法
    });
});